package org.primefaces.examples.moviecollector.dao;


import static org.junit.Assert.*;

import java.util.List;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.primefaces.examples.moviecollector.domain.Eventos;
import org.primefaces.examples.moviecollector.domain.Usuarios;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;


@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(transactionManager = "txManager")
@ContextConfiguration(locations = { "/applicationContext.xml" })

public class UsuariosDAOWithJPATest {
	
	private UsuarioDAO usuaDAO;
	
	@Autowired
	public void setRepository(UsuarioDAO usuaDAO){
		this.usuaDAO=usuaDAO;
	}
	
	@Test
	public void guardarUsuario(){
		Usuarios usua = new Usuarios();
		usua.setNombre("Oscar");
		
		usuaDAO.persist(usua);
		assertNotNull(usua.getId());
	}
	
	@Test
	public void buscarPorNombre(){
		Usuarios usua = new Usuarios();
		usua.setNombre("Edward");
		
		usuaDAO.persist(usua);
		assertNotNull(usua.getId());
		
		List<Usuarios> resultado = usuaDAO.findByNombre("Edward");
		assertEquals(1, resultado.size());
		assertEquals("Edward", resultado.get(0).getNombre());
		
	}
	
	@Test
	public void eliminar(){
	
		Usuarios usua = new Usuarios();
		usua.setNombre("Alejandro");
	
		usuaDAO.persist(usua);
		
		usuaDAO.delete(usua);
		
		
		assertFalse((!usua.getNombre().equals("Alejandro")));
		
		
	}
}

